package org.artifact.core.db;

import org.artifact.core.lang.AbstractStruct;

import java.util.Date;
import java.util.Map;

public interface AbstractEntity<T> extends AbstractStruct<Object,T>,Cloneable{
	T deepCopy();

	Date getCreateDate();
	
	Date getModifiedDate();

	//T build(T t);

	T toSave();

	default Object[] toArray() {
		return null;
	}

	default T forArray(Object[] array) {
		return null;
	}

	default Map toMap() {
		return null;
	}

	default T forMap(Map map) {
		return null;
	}

	default Map toHashMap() {
		return null;
	}

	default T forHashMap(Map map) {
		return null;
	}

//	default byte[] toByte() {
//		return null;
//	}
//
//	default T forByte(byte[] data) {
//		return null;
//	}

	default String toJson() {
		return null;
	}

	default T forJson(String json) {
		return null;
	}
}
